
//402.移掉K位数字
class Solution {
public:
    string removeKdigits(string nums, int k) {
        //单调栈维护前面的数字
        int n=nums.size();
        vector<char> st;
        for(int i=0;i<n;i++)
        {
            while(!st.empty()&&st.back()>nums[i]&&k)  //对前一个数字进行删除
            {
                st.pop_back();
                k--;
            }
            st.push_back(nums[i]);  //将当前数字加入
        }
        while(k&&!st.empty())  //如果k没有用完,从后往前删除
        {
            st.pop_back();
            k--;
        }

        string ret;
        int i=0,len=st.size();
        while(i<len&&st[i]=='0') i++;  //处理前导0
        while(i<len)
            ret+=st[i++];

        return ret==""?"0":ret;
    }
};